package com.mcp.converter.shared.response.sql;

import com.mcp.converter.shared.enums.SQLElementType;
import lombok.Data;

import java.util.List;

/**
 * SQL元素类
 * 表示SQL语句中的各种元素，如表名、列名、函数、数据类型等
 * @author felix
 */
@Data
public class SQLElement {
    
    /**
     * 元素类型
     */
    private SQLElementType type;
    
    /**
     * 元素名称
     */
    private String name;
    
    /**
     * 元素值
     */
    private String value;
    
    /**
     * 元素位置
     */
    private Position position;
    
    /**
     * 父元素
     */
    private SQLElement parent;
    
    /**
     * 子元素列表
     */
    private List<SQLElement> children;

    public SQLElement(SQLElementType type, String name) {
        this.type = type;
        this.name = name;
    }

    public SQLElement(SQLElementType type, String name, String value) {
        this(type, name);
        this.value = value;
    }
    public void addChild(SQLElement child) {
        if (child != null) {
            child.setParent(this);
            this.children.add(child);
        }
    }
    
    public boolean hasChildren() {
        return this.children != null && !this.children.isEmpty();
    }
}
